home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
Libraries
/
New WASTE Handlers
/
New Pict Handler
/
WEObjectPicture.c
next >
Wrap
Text File
|
1995-06-07
|
3KB
|
88 lines
// ————• WASTE Picture Object——————————————————————————————————————————————————————————
// ———• by Michael F. Kamprath, kamprath@earthlink.net
// ————• Includes——————————————————————————————————————————————————————————————————————
#include "WEObjectPicture.h"
// ————• Macros————————————————————————————————————————————————————————————————————————
#define ThrowIfOSErr_(x) if(x != noErr) goto Exit
// ————• Static Prototypes—————————————————————————————————————————————————————————————
static pascal OSErr HandleNewPicture(Point *defaultObjectSize, WEObjectReference objectRef);
static pascal OSErr HandleDisposePicture(WEObjectReference objectRef );
static pascal OSErr HandleDrawPicture(Rect *destRect, WEObjectReference objectRef );
static UniversalProcPtr sNewPictRD;
static UniversalProcPtr sDisposePictRD;
static UniversalProcPtr sDrawPictRD;
// ————• Installer——————————————————————————————————————————————————————————————————————
OSErr WEObjPictureInstall(WEHandle inWaste)
{
OSErr theErr = noErr;
if(sNewPictRD == NULL)
{
sNewPictRD = NewWENewObjectProc(HandleNewPicture);
sDisposePictRD = NewWEDisposeObjectProc(HandleDisposePicture);
sDrawPictRD = NewWEDrawObjectProc(HandleDrawPicture);
}
theErr = WEInstallObjectHandler('PICT', weNewHandler, sNewPictRD, inWaste);
ThrowIfOSErr_(theErr);
theErr = WEInstallObjectHandler('PICT', weDisposeHandler, sDisposePictRD, inWaste);
ThrowIfOSErr_(theErr);
theErr = WEInstallObjectHandler('PICT', weDrawHandler, sDrawPictRD, inWaste);
ThrowIfOSErr_(theErr);
Exit:
return theErr;
}
// ————• New handler—————————————————————————————————————————————————————————————————————
pascal OSErr HandleNewPicture(Point *defaultObjectSize,WEObjectReference objectRef)
{
PicHandle thePic;
Rect theFrame;
thePic = (PicHandle)WEGetObjectDataHandle(objectRef);
theFrame = (*thePic)->picFrame;
OffsetRect(&theFrame, -theFrame.left, -theFrame.top);
*defaultObjectSize = botRight(theFrame);
return(noErr);
}
// ————• Dispose handler—————————————————————————————————————————————————————————————————
pascal OSErr HandleDisposePicture(WEObjectReference objectRef )
{
PicHandle thePic;
thePic = (PicHandle)WEGetObjectDataHandle(objectRef);
if (thePic)
KillPicture(thePic);
return(MemError());
}
// ————• Draw handler————————————————————————————————————————————————————————————————————
pascal OSErr HandleDrawPicture (Rect *destRect, WEObjectReference objectRef )
{
PicHandle thePic;
thePic = (PicHandle)WEGetObjectDataHandle(objectRef);
DrawPicture(thePic, destRect);
return( noErr );
}